﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EasyTrader.Manager
{
    public class SubjectSysManager : SysManager
    {
        #region Member Variables
        private int m_CallTimeOcc = 0;
        public int CallTimeOcc
        {
            get { return m_CallTimeOcc; }
            set { m_CallTimeOcc = value; }
        }
        private int m_PutTimeOcc = 0;
        public int PutTimeOcc
        {
            get { return m_PutTimeOcc; }
            set { m_PutTimeOcc = value; }
        }
        private int m_CallSquareOcc = 0;
        public int CallSquareOcc
        {
            get { return m_CallSquareOcc; }
            set { m_CallSquareOcc = value; }
        }
        private int m_PutSquareOcc = 0;
        public int PutSquareOcc
        {
            get { return m_PutSquareOcc; }
            set { m_PutSquareOcc = value; }
        }
        private int m_CallPutTotalSquareOcc = 0;
        public int CallPutTotalSquareOcc
        {
            get { return m_CallPutTotalSquareOcc; }
            set { m_CallPutTotalSquareOcc = value; }
        }
        #endregion
        // 이 함수는 현재 상태가 상승인지 하락인지 판단을 한다. 새로운 상태가 나오면 새로운 상태를 등록한다.
        // 호가 정점에서 평균값으로 일정개수를 내려오면 상태를 전환시켜 준다.
        private void FindCurState()
        {
            //return m_TotalSigMan.FindState(m_SysType, m_FirstSig, m_PriceStateList, m_LogFileName, ref m_CurState);

            // 시스템 상태를 확인한다.
            EasyTrader.Signal.PriceSignal curState = FindSysState();
            // 시스템 상태가 바뀌었을 경우 확인하고 신호정보를 복사하여 추가한다.
            m_TotalSigMan.CheckAddState(m_TotalSigMan.CurIndex, m_PriceStateList, curState);
        }

        private EasyTrader.Signal.PriceSignal FindSysState()
        {
            EasyTrader.Signal.PriceSignal lastState = m_TotalSigMan.GetLastSignal(m_PriceStateList);
            double curVal = m_TotalSigMan.CurVal;
            if (curVal == 0.0)
                return null;

            double dayAmp = m_TotalSigMan.GetDayAmp();
            // 현재 파동을 가져온다.
            EasyTrader.Wave.PriceWave curWave = m_TotalSigMan.ETWaveSignalManager.EasyTraderWaveManager.GetCurWave(m_TotalSigMan.CurIndex);

            if (curWave == null)
                return null;

            

            return null;
        }

        // 상태를 바탕으로 신호를 발생시킨다.
        private void CheckSignal()
        {
            ;
        }
        public void UpdateSysState()
        {
            FindCurState();
            CheckSignal();
        }
    }
}
